.text
.section .rodata
.LC0:
	.string	"varr[1] = %d\n"

// 此为我个人写的，没有参照gcc生成的汇编代码
// 实在没看懂gcc生成那么复杂的代码是啥意思，用我这个低配版的似乎也能用
.text
.globl	main
.type	main, @function
main:
    pushq %rbp
    movq %rsp, %rbp

    subq $16, %rsp
    // 划分局部变量
    // i: -4(%rbp)
    // sz: -8(%rbp)
    // varr: -16(%rbp) 值暂时不知道，需要动态计算
    movl $783, -8(%rbp) /* sz */

    movl -8(%rbp) /* sz */, %eax
    salq $2, %rax
    movq %rax, %rcx
    xorq %rdx, %rdx
    pushq %rbx
    movq $16, %rbx
    idiv %rbx
    popq %rbx
    cmpq $0, %rdx
    je .NOTNEEDADD
    addq $16, %rcx
.NOTNEEDADD:
    andq $-16, %rcx
    subq %rcx, %rsp
    // varr
    movq %rsp, -16(%rbp)

    movl $0, -4(%rbp) /* i */
    jmp .FOR_COMPARE
.FOR_ENTER:
    movl -4(%rbp) /* i */, %eax
    leal 1(%eax), %edx
    cltq
    movq %rax, %rcx
    movq -16(%rbp) /* varr */, %rax
    movl %edx, (%rax, %rcx, 4)
    incl -4(%rbp) /* i */
.FOR_COMPARE:
    movl -8(%rbp) /* sz */, %edx
    cmpl %edx, -4(%rbp) /* i */
    jl .FOR_ENTER

    movq -16(%rbp) /* varr */, %rax
    movl 4(%rax), %esi
    leaq .LC0(%rip), %rdi
    movl $0, %eax
    call printf

    movl $0, %eax
    movq %rbp, %rsp
    popq %rbp
    ret